【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)第二章学习笔记

您所在的位置:网站首页 pytorch conv2d源码 【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)第二章学习笔记

【2023 · CANN训练营第一季】昇腾AI入门课(PyTorch)第二章学习笔记

2023-04-11 22:40| 来源: 网络整理| 查看: 265

See AscendPyTorch模型迁移&调优——模型迁移方法和步骤

1.NPU&Davinci硬件架构介绍

NPU又叫AI芯片,是一种嵌入式神经网络处理器,其与CPU、GPU明显区别之一在于计算单元的设计,如图所示,在AI Core内部计算单元进一步划分为矩阵运算,向量运算和标量运算。下面详细介绍一下各部分

Cube,负责矩阵运算,每次可完成一个fp16类型的16 * 16与16 * 16大小的两个矩阵相乘,相关操作包括matmul,Conv2d,linear等运算。Vector,负责向量运算,算力低于Cube,但灵活度高。Vector运算类型包括fp16,fp32,int32,int8Scalar,负责标量运算和程序流程控制,功能上类似于一个小型cpu

2.Ascend-Pytorch(1.8)安装

放一个Ascend官方安装教程,具体不再赘述。

3.Pytorch模型迁移指导

注意:这里所说的迁移只是指用Pytorch搭建的模型在Ascend系列硬件上训练,并不直接涉及MindSpore。

Pytorch的模型迁移共有三种方式,根据源代码的不同修改的难易程度也不同,因此修改时需要因‘’地‘’制宜

自动迁移

难度系数:一颗心操作方式:只需要在训练脚本中添加下面一行代码即可跑通整个模型from torch_npu.contrib import transfer_to_npu

脚本转换工具迁移

难度系数:三颗心操作方式:# 进入脚本转换工具所在路径(即脚本工具的安装路径)cd Ascend-cann-toolkit安装目录/ascend-toolkit/tools/ms_fmk_transplt/# 执行脚本转换./pytorch_ _gpu2npu.sh -i 原始脚本路径 -0 脚本转换结果输出路径 -V 原始脚本框架# 查看结果

手工迁移,需要注意的点,已在下面列出

第一步——迁移准备(DDP&混合精度方式修改)

关于分布式:于NPU上的一 些限制,PyTorch需要使DistributedDataParallel(DDP), 若原始代码使用的是DataParallel(DP)则需要修改为DDP,DP相应的一些实现例如torch.cuda.common, 则可以替换为torch.distributed相关操作由于npu天然的混合精度,因此需要使用apex对原始代码进行修改,如下图所示

第二步:单卡模型迁移(训练设备修改)

将设备从cuda切换至npu(具体示例参见文尾链接)torch.cuda→torch.npu

第三步:多卡模型迁移

将分布式通讯方式“nccl”改为“hccl”(具体示例参见文尾链接)

个人经验:可以先试着使用自动迁移的方式,在训练脚本中添加添加那一行代码,若不行的话则直接进行手动迁移

4.总结

了解了Pytorch是如何适配到昇腾平台上的了解了Davinci硬件架构以及什么样的模型在昇腾上更亲和了解了软件术语和Ascend-Pytorch的安装步骤了解了如何将原生Pytorch的模型代码适配到Ascend-Pytorch

5.链接

昇腾CANN应用开发和Pytorch网络迁移学习文档



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3